0 REM POLICE ARTIST.V1.83 (C) COPYRIGHT 1983 ELIZABETH LEVIN
1 ONERR GOTO 40000
100 HIMEM: 8192:V$ = "V1.83"
130 S = -16336:BLANK$ = " ": DATA 32,74,255,173,48,192,136,208,5,206,1,3,240,9,202,208,245,174,0,3,76,5,3,32,63,255,96: FOR X = 770 TO 796: READ Y: POKE X,Y: NEXT : DATA 101,90,85,80,71,67, 191,161,120,95: DIM RIGHT(9): FOR X = 0 TO 9: READ RIGHT(X): NEXT
190 DATA HAIR,CHIN,EYES,NOSE,MOUTH," DONE ":NP = 6: DIM FACE$(NP): FOR X = 1 TO NP: READ FACE$(X): NEXT
220 L$ = "HBCDFGWZLMNPRSTVKAE": DATA A,E,I,O,U,EE,EA,OA,OO,AI,IA,IE,OU,AU,OI,OY, E,ER,ELL,ICK,ING,COCK,WOOD,ORTH,MAN,SON,STEIN,SKY,BY,LY,MORE,: DIM LS$(16,2): FOR Y = 1 TO 2: FOR X = 1 TO 16: READ LS$(X,Y): NEXT : NEXT
420 PK = 0:OV = 0:THIS = 0: GOSUB 5000: IF OV THEN 700
515 IF NOT INST THEN GOSUB 3450
520 THIS = 1: GOSUB 3000:THIS = 0:INST = 1: VTAB 23: HTAB 1: CALL -958: INVERSE : VTAB 21: HTAB 1: PRINT LEFT$(BLANK$,25): PRINT LEFT$(BLANK$,25):RIGHT = 0: FOR PART = 1 TO 5: IF FACE%(PART,0) = FACE%(PART,1) THEN RIGHT = RIGHT +1
530 NEXT : NORMAL :Z$ = "AT LARGE": IF RIGHT = 5 THEN Z$ = "IDENTIFIED": GOSUB 2000: GOSUB 7000: GOSUB 2100: GOTO 620
550 GOSUB 7000: FOR PART = 1 TO 5: IF FACE%(PART,0) = FACE%(PART,1) THEN INVERSE : POKE 768,RIGHT(PART): POKE 769,60: CALL 770: GOTO 590
580 FOR X = 1 TO 50:SS = PEEK(S): NEXT
590 GOSUB 3300: NORMAL : FOR X = 1 TO 100: NEXT : NEXT :: FOR X = 55 TO 255 STEP 10: POKE 768,X: POKE 769,5: CALL 770: NEXT : INVERSE
620 GOSUB 2200: IF RIGHT = 5 AND PK < = OSC% THEN OSC% = PK: FLASH : GOSUB 3700: FOR X = 1 TO 3: FOR Z = 1 TO 2: FOR Y = 5 +Z TO 7 +Z: POKE 768,RIGHT(Y)/4: POKE 769,Y *2 *Z: CALL 770: NEXT : NEXT : NEXT
630 IF RIGHT = 5 THEN INVERSE : GOSUB 3700
640 IF RIGHT = 5 AND OSC% <OSC%(LVL) THEN GOSUB 30380
650 GOTO 400
700 VTAB 1: NORMAL : PRINT : PRINT D$;"RUN HELLO,D1"
1000 REM
1010 X = 0:Y = 0: IF FACE%(P,THIS) THEN POKE 768,20: POKE 769,3: CALL 770
1020 L = PART%(P,SCL%(P,FACE%(P,THIS))) +L1: POKE 36352,L - INT(L/256) *256: POKE 36353, INT(L/256): IF THIS THEN X = X +140
2110 H = 1: FOR X = 1 TO 3:H = NOT H: HCOLOR= 4 -H: FOR Y = 0 TO 2: HPLOT 3 +Y,3 +Y TO 137 -Y,3 +Y TO 137 -Y,159 -Y TO 3 +Y,159 -Y TO 3 +Y,3 +Y: NEXT : FOR Z = 1 TO 2: FOR Y = 5 +Z TO 7 +Z: POKE 768,RIGHT(Y)/2: POKE 769,Y *2 *Z: CALL 770: NEXT : NEXT : NEXT : RETURN
2200 REM
2210 VTAB 22: HTAB 4: PRINT LEFT$(BLANK$,14): VTAB 21: HTAB 4: PRINT LEFT$(BLANK$,14);: SPEED= 50: HTAB 5 +(6 - LEN(NAME$)/2): FOR X = 1 TO LEN(NAME$): PRINT MID$ (NAME$,X,1);:SS = PEEK(S): NEXT : PRINT : HTAB 5 +(6 - LEN(Z$)/2): FOR X = 1 TO LEN(Z$): PRINT MID$ (Z$,X,1);:SS = PEEK(S): NEXT : SPEED= 255: RETURN
3000 REM
3010 IF OV THEN 3290: REM
3020 VTAB 23: HTAB 1: CALL -958: FOR X = 5 TO 1 STEP -1: IF FACE%(X,THIS) = 0 THEN PART = X
3030 NEXT : NORMAL : VTAB 24: HTAB 1: CALL -958:H = 1: FOR X = 1 TO NP: HTAB H: PRINT FACE$(X);:H = H +6: NEXT
3060 IF PART <1 THEN PART = NP
3070 IF PART >NP THEN PART = 1
3080 FLASH : GOSUB 3300: NORMAL : GET ANS$:KEY = ASC(ANS$) +128: GOSUB 9000: IF ANS$ = " " THEN GOSUB 3600: GOTO 3250
3090 IF ANS$ = CHR$(21) THEN GOSUB 3300::PART = PART +1: GOTO 3060
3100 IF ANS$ = CHR$(8) THEN GOSUB 3300:PART = PART -1: GOTO 3060
3110 IF ANS$ < > CHR$(13) THEN GOSUB 3400: GOTO 3060
5040 GOSUB 5100: FOR PART = 1 TO 5:FACE%(PART,0) = INT( RND(1) *MAX) +1:FACE%(PART,1) = 0: NEXT : GOSUB 2000: GOSUB 3600:NAME$ = MID$ (L$,SCL%(1,FACE%(1,0)) +3,1) +"." + MID$ (L$,SCL%(2,FACE%(2,0)),1) +LS$((SCL%(3,FACE%(3,0))),1) + MID$ (L$,SCL%(4,FACE%(4,0)) +1,1) +LS$((SCL%(5,FACE%(5,0))),2):Z = FRE(0): GOSUB 2000
5090 RETURN
5100 REM
5110 IF MAX = MX THEN FOR PART = 1 TO 5: FOR X = 1 TO MAX:SCL%(PART,X) = X: NEXT :SS = PEEK(S): NEXT : GOTO 5150
5120 FOR PART = 1 TO 5: FOR X = 1 TO MX:LST%(X) = X: NEXT :WHERE = MX: FOR X = 1 TO MAX:R = INT( RND(1) *WHERE) +1:SCL%(PART,X) = LST%(R):LST%(R) = LST%(WHERE):WHERE = WHERE -1:SS = PEEK(S): NEXT : NEXT
5150 RETURN
7000 REM
7010 IF THIS THEN GOSUB 2000
7020 FOR P = 1 TO 5: GOSUB 1000: NEXT : RETURN
9000 REM
9010 IF KEY = 147 THEN POKE 770, SGN(64 - PEEK(770)) *64 + PEEK(770):S = NOT SGN(S) * -16336
9020 RETURN
30000 REM
30010 D$ = CHR$(4): NORMAL :LVL = PEEK(798): IF LVL <0 OR LVL >3 THEN LVL = 0
30050 FILE$ = "SHAPE LENGTHS." +V$: PRINT D$;"OPEN ";FILE$;",D1": PRINT D$;"READ ";FILE$: INPUT MX: DIM PART%(5,MX),SCL%(5,MX),LST%(MX): FOR X = 1 TO MX: FOR PART = 1 TO 5: INPUT PART%(PART,X): NEXT : NEXT
30170 PRINT D$;"CLOSE":X$ = "READ": GOSUB 31000: INPUT PL%:: FOR X = 0 TO 3: INPUT OSC%(X): NEXT :OSC% = OSC%(LVL): PRINT D$;"CLOSE": PRINT : RETURN
30380 X$ = "WRITE": GOSUB 31000: PRINT PL%:OSC%(LVL) = OSC%: FOR X = 0 TO 3: PRINT OSC%(X): NEXT : PRINT D$;"CLOSE": PRINT : RETURN